package com.Exception;
//异常
/*Exception异常类包括
运行时异常或非受检异常  RuntimeException:编译期不检查，出现问题，需要返回来修改代码
* 编译时异常或受检异常 非RuntimeException:编译期必须处理，否则程序不能通过编译，更不能运行*/
/*异常处理之try-catch
    try{
        可能出现的异常代码;
    }catch(异常类名 变量名){
        异常处理代码;
    }
* */
public class ExceptionDemo1 {
    public static void main(String[] args){
        System.out.println("开始");
        method();
        System.out.println("结束");
    }
    public static void method(){
        try{
            int[] arr = {1,2,3};
            System.out.println(arr[3]);//若发生异常，则相当于new ArrayIndexOutOfBoundsException();
        }catch(ArrayIndexOutOfBoundsException e){
//            throwable类
            e.printStackTrace();//异常的错误信息
            //java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
            //	at com.Exception.ExceptionDemo1.method(ExceptionDemo1.java:21)
            //	at com.Exception.ExceptionDemo1.main(ExceptionDemo1.java:15)
            System.out.println(e.getMessage());//详细字符串
//            Index 3 out of bounds for length 3
            System.out.println(e.toString());//简短描述
//            java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
        }
    }
}

//jvm默认异常处理
/*如果不进行异常处理的话，jvm会进行默认的异常处理。在执行method();后进行以下两步操作：
* 1.把异常程序的名称，异常原因以及位置等信息输出在控制台
* 2.程序停止执行(则结束不会输出来)*/